home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / perl / perl5a1.lha / perl5alpha1 / Makefile.SH < prev    next >
Makefile  |  1993-07-24  |  10KB  |  413 lines

  1. case $CONFIG in
  2. '')
  3.     if test ! -f config.sh; then
  4.     ln ../config.sh . || \
  5.     ln ../../config.sh . || \
  6.     ln ../../../config.sh . || \
  7.     (echo "Can't find config.sh."; exit 1)
  8.     fi 2>/dev/null
  9.     . ./config.sh
  10.     ;;
  11. esac
  12. case "$0" in
  13. */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  14. esac
  15.  
  16. case "$d_symlink" in
  17. *define*) sln='ln -s' ;;
  18. *) sln='ln';;
  19. esac
  20.  
  21. case "$d_dosuid" in
  22. *define*) suidperl='suidperl' ;;
  23. *) suidperl='';;
  24. esac
  25.  
  26. echo "Extracting Makefile (with variable substitutions)"
  27. rm -f Makefile
  28. cat >Makefile <<!GROK!THIS!
  29. # $RCSfile: Makefile.SH,v $$Revision: 4.1 $$Date: 92/08/07 17:18:08 $
  30. #
  31. # $Log:    Makefile.SH,v $
  32. # Revision 4.1  92/08/07  17:18:08  lwall
  33. # Stage 6 Snapshot
  34. # Revision 4.0.1.4  92/06/08  11:40:43  lwall
  35. # patch20: cray didn't give enough memory to /bin/sh
  36. # patch20: various and sundry fixes
  37. # Revision 4.0.1.3  91/11/05  15:48:11  lwall
  38. # patch11: saberized perl
  39. # patch11: added support for dbz
  40. # Revision 4.0.1.2  91/06/07  10:14:43  lwall
  41. # patch4: cflags now emits entire cc command except for the filename
  42. # patch4: alternate make programs are now semi-supported
  43. # patch4: uperl.o no longer tries to link in libraries prematurely
  44. # patch4: installperl now installs x2p stuff too
  45. # Revision 4.0.1.1  91/04/11  17:30:39  lwall
  46. # patch1: C flags are now settable on a per-file basis
  47. # Revision 4.0  91/03/20  00:58:54  lwall
  48. # 4.0 baseline.
  49.  
  50. CC = $cc
  51. YACC = $yacc
  52. bin = $installbin
  53. scriptdir = $scriptdir
  54. privlib = $installprivlib
  55. mansrc = $mansrc
  56. manext = $manext
  57. LDFLAGS = $ldflags
  58. CLDFLAGS = $ldflags
  59. SMALL = $small
  60. LARGE = $large $split
  61. mallocsrc = $mallocsrc
  62. mallocobj = $mallocobj
  63. SLN = $sln
  64. RMS = rm -f
  65.  
  66. libs = $libs $cryptlib
  67.  
  68. public = perl
  69.  
  70. shellflags = $shellflags
  71.  
  72. # To use an alternate make, set $altmake in config.sh.
  73. MAKE = ${altmake-make}
  74.  
  75. !GROK!THIS!
  76.  
  77. cat >>Makefile <<'!NO!SUBS!'
  78.  
  79. CCCMD = `sh $(shellflags) cflags $@`
  80.  
  81. private = 
  82.  
  83. scripts = h2ph
  84.  
  85. manpages = perl.man h2ph.man
  86.  
  87. util =
  88.  
  89. sh = Makefile.SH makedepend.SH h2ph.SH
  90.  
  91. h1 = EXTERN.h INTERN.h av.h cop.h config.h embed.h form.h handy.h hv.h
  92. h2 = mg.h op.h opcode.h perl.h pm.h regcomp.h regexp.h gv.h sv.h scope.h util.h
  93.  
  94. h = $(h1) $(h2)
  95.  
  96. c1 = av.c cop.c cons.c consop.c doop.c doio.c dolist.c dump.c
  97. c2 = eval.c form.c hv.c main.c $(mallocsrc) perl.c pp.c regcomp.c regexec.c
  98. c3 = run.c gv.c scope.c sv.c toke.c util.c usersub.c
  99.  
  100. c = $(c1) $(c2) $(c3)
  101.  
  102. s1 = av.c cop.c cons.c consop.c doop.c doio.c dolist.c dump.c
  103. s2 = eval.c form.c hv.c main.c mg.c perl.c pp.c regcomp.c regexec.c
  104. s3 = run.c gv.c sv.c scope.c toke.c util.c usersub.c perly.c
  105.  
  106. saber = $(s1) $(s2) $(s3)
  107.  
  108. obj1 = av.o cop.o cons.o consop.o doop.o doio.o dolist.o dump.o
  109. obj2 = eval.o form.o $(mallocobj) mg.o perl.o pp.o regcomp.o regexec.o
  110. obj3 = run.o gv.o sv.o scope.o toke.o util.o
  111.  
  112. obj = $(obj1) $(obj2) $(obj3)
  113.  
  114. tobj1 = tav.o tcop.o tcons.o tconsop.o tdoop.o tdoio.o tdolist.o tdump.o
  115. tobj2 = teval.o tform.o thv.o $(mallocobj) tmg.o tpp.o tregcomp.o tregexec.o
  116. tobj3 = trun.o tgv.o tsv.o tmg.o tscope.o ttoke.o tutil.o
  117.  
  118. tobj = $(tobj1) $(tobj2) $(tobj3)
  119.  
  120. lintflags = -hbvxac
  121.  
  122. addedbyconf = Makefile.old bsd eunice filexp loc pdp11 usg v7
  123.  
  124. # grrr
  125. SHELL = /bin/sh
  126.  
  127. .c.o:
  128.     $(CCCMD) $*.c
  129.  
  130. all: $(public) $(private) $(util) uperl.o $(scripts)
  131.     cd x2p; $(MAKE) all
  132.     touch all
  133.  
  134. # This is the standard version that contains no "taint" checks and is
  135. # used for all scripts that aren't set-id or running under something set-id.
  136. # The $& notation is tells Sequent machines that it can do a parallel make,
  137. # and is harmless otherwise.
  138.  
  139. perl: $& main.o libperl.rlb
  140.     $(CC) $(LARGE) $(CLDFLAGS) main.o libperl.a $(libs) -o perl
  141.  
  142. libperl.rlb: libperl.a
  143.     ranlib libperl.a
  144.     touch libperl.rlb
  145.  
  146. libperl.a: $& perly.o perl.o $(obj) hv.o usersub.o
  147.     ar rcuv libperl.a $(obj) hv.o perly.o usersub.o
  148.  
  149. # This version, if specified in Configure, does ONLY those scripts which need
  150. # set-id emulation.  Suidperl must be setuid root.  It contains the "taint"
  151. # checks as well as the special code to validate that the script in question
  152. # has been invoked correctly.
  153.  
  154. suidperl: $& sperl.o tmain.o libtperl.rlb
  155.     $(CC) $(LARGE) $(CLDFLAGS) sperl.o tmain.o libtperl.a $(libs) -o suidperl
  156.  
  157. # This version interprets scripts that are already set-id either via a wrapper
  158. # or through the kernel allowing set-id scripts (bad idea).  Taintperl must
  159. # NOT be setuid to root or anything else.  The only difference between it
  160. # and normal perl is the presence of the "taint" checks.
  161.  
  162. taintperl: $& tmain.o libtperl.rlb
  163.     $(CC) $(LARGE) $(CLDFLAGS) tmain.o libtperl.a $(libs) -o taintperl
  164.  
  165. libtperl.rlb: libtperl.a
  166.     ranlib libtperl.a
  167.     touch libtperl.rlb
  168.  
  169. libtperl.a: $& tperly.o tperl.o $(tobj) thv.o usersub.o
  170.     ar rcuv libtperl.a $(tobj) thv.o tperly.o usersub.o tperl.o
  171.  
  172. # This command assumes that /usr/include/dbz.h and /usr/lib/dbz.o exist.
  173.  
  174. dbzperl: $& main.o zhv.o libperl.rlb
  175.     $(CC) $(LARGE) $(CLDFLAGS) main.o zhv.o /usr/lib/dbz.o libperl.a $(libs) -o dbzperl
  176.  
  177. zhv.o: hv.c $(h)
  178.     $(RMS) zhv.c
  179.     $(SLN) hv.c zhv.c
  180.     $(CCCMD) -DWANT_DBZ zhv.c
  181.     $(RMS) zhv.c
  182.  
  183. uperl.o: $& $(obj) main.o hv.o perly.o
  184.     -ld $(LARGE) $(LDFLAGS) -r $(obj) main.o hv.o perly.o -o uperl.o
  185.  
  186. saber: $(saber)
  187.     # load $(saber)
  188.     # load /lib/libm.a
  189.  
  190. # Replicating all this junk is yucky, but I don't see a portable way to fix it.
  191.  
  192. tperly.o: perly.c perly.h $(h)
  193.     $(RMS) tperly.c
  194.     $(SLN) perly.c tperly.c
  195.     $(CCCMD) -DTAINT tperly.c
  196.     $(RMS) tperly.c
  197.  
  198. tperl.o: perl.c perly.h patchlevel.h perl.h $(h)
  199.     $(RMS) tperl.c
  200.     $(SLN) perl.c tperl.c
  201.     $(CCCMD) -DTAINT tperl.c
  202.     $(RMS) tperl.c
  203.  
  204. sperl.o: perl.c perly.h patchlevel.h $(h)
  205.     $(RMS) sperl.c
  206.     $(SLN) perl.c sperl.c
  207.     $(CCCMD) -DTAINT -DIAMSUID sperl.c
  208.     $(RMS) sperl.c
  209.  
  210. tav.o: av.c $(h)
  211.     $(RMS) tav.c
  212.     $(SLN) av.c tav.c
  213.     $(CCCMD) -DTAINT tav.c
  214.     $(RMS) tav.c
  215.  
  216. tcop.o: cop.c $(h)
  217.     $(RMS) tcop.c
  218.     $(SLN) cop.c tcop.c
  219.     $(CCCMD) -DTAINT tcop.c
  220.     $(RMS) tcop.c
  221.  
  222. tcons.o: cons.c $(h) perly.h
  223.     $(RMS) tcons.c
  224.     $(SLN) cons.c tcons.c
  225.     $(CCCMD) -DTAINT tcons.c
  226.     $(RMS) tcons.c
  227.  
  228. tconsop.o: consop.c $(h)
  229.     $(RMS) tconsop.c
  230.     $(SLN) consop.c tconsop.c
  231.     $(CCCMD) -DTAINT tconsop.c
  232.     $(RMS) tconsop.c
  233.  
  234. tdoop.o: doop.c $(h)
  235.     $(RMS) tdoop.c
  236.     $(SLN) doop.c tdoop.c
  237.     $(CCCMD) -DTAINT tdoop.c
  238.     $(RMS) tdoop.c
  239.  
  240. tdoio.o: doio.c $(h)
  241.     $(RMS) tdoio.c
  242.     $(SLN) doio.c tdoio.c
  243.     $(CCCMD) -DTAINT tdoio.c
  244.     $(RMS) tdoio.c
  245.  
  246. tdolist.o: dolist.c $(h)
  247.     $(RMS) tdolist.c
  248.     $(SLN) dolist.c tdolist.c
  249.     $(CCCMD) -DTAINT tdolist.c
  250.     $(RMS) tdolist.c
  251.  
  252. tdump.o: dump.c $(h)
  253.     $(RMS) tdump.c
  254.     $(SLN) dump.c tdump.c
  255.     $(CCCMD) -DTAINT tdump.c
  256.     $(RMS) tdump.c
  257.  
  258. teval.o: eval.c $(h)
  259.     $(RMS) teval.c
  260.     $(SLN) eval.c teval.c
  261.     $(CCCMD) -DTAINT teval.c
  262.     $(RMS) teval.c
  263.  
  264. tform.o: form.c $(h)
  265.     $(RMS) tform.c
  266.     $(SLN) form.c tform.c
  267.     $(CCCMD) -DTAINT tform.c
  268.     $(RMS) tform.c
  269.  
  270. thv.o: hv.c $(h)
  271.     $(RMS) thv.c
  272.     $(SLN) hv.c thv.c
  273.     $(CCCMD) -DTAINT thv.c
  274.     $(RMS) thv.c
  275.  
  276. tmain.o: main.c $(h)
  277.     $(RMS) tmain.c
  278.     $(SLN) main.c tmain.c
  279.     $(CCCMD) -DTAINT tmain.c
  280.     $(RMS) tmain.c
  281.  
  282. tpp.o: pp.c $(h)
  283.     $(RMS) tpp.c
  284.     $(SLN) pp.c tpp.c
  285.     $(CCCMD) -DTAINT tpp.c
  286.     $(RMS) tpp.c
  287.  
  288. tregcomp.o: regcomp.c $(h)
  289.     $(RMS) tregcomp.c
  290.     $(SLN) regcomp.c tregcomp.c
  291.     $(CCCMD) -DTAINT tregcomp.c
  292.     $(RMS) tregcomp.c
  293.  
  294. tregexec.o: regexec.c $(h)
  295.     $(RMS) tregexec.c
  296.     $(SLN) regexec.c tregexec.c
  297.     $(CCCMD) -DTAINT tregexec.c
  298.     $(RMS) tregexec.c
  299.  
  300. trun.o: run.c $(h)
  301.     $(RMS) trun.c
  302.     $(SLN) run.c trun.c
  303.     $(CCCMD) -DTAINT trun.c
  304.     $(RMS) trun.c
  305.  
  306. tgv.o: gv.c $(h)
  307.     $(RMS) tgv.c
  308.     $(SLN) gv.c tgv.c
  309.     $(CCCMD) -DTAINT tgv.c
  310.     $(RMS) tgv.c
  311.  
  312. tsv.o: sv.c $(h) perly.h
  313.     $(RMS) tsv.c
  314.     $(SLN) sv.c tsv.c
  315.     $(CCCMD) -DTAINT tsv.c
  316.     $(RMS) tsv.c
  317.  
  318. ttoke.o: toke.c $(h) perly.h
  319.     $(RMS) ttoke.c
  320.     $(SLN) toke.c ttoke.c
  321.     $(CCCMD) -DTAINT ttoke.c
  322.     $(RMS) ttoke.c
  323.  
  324. tutil.o: util.c $(h)
  325.     $(RMS) tutil.c
  326.     $(SLN) util.c tutil.c
  327.     $(CCCMD) -DTAINT tutil.c
  328.     $(RMS) tutil.c
  329.  
  330. perly.h: perly.c
  331.     @ echo Dummy dependency for dumb parallel make
  332.     touch perly.h
  333.  
  334. embed.h: embed_h.SH global.var interp.var
  335.     sh embed_h.SH
  336.  
  337. perly.c: perly.y perly.fixer
  338.     @ \
  339. case "$(YACC)" in \
  340.     *bison*) echo 'Expect' 22 shift/reduce and 52 reduce/reduce conflicts;; \
  341.     *) echo 'Expect' 24 shift/reduce and 50 reduce/reduce conflicts;; \
  342. esac
  343.     $(YACC) -d perly.y
  344.     sh $(shellflags) ./perly.fixer y.tab.c perly.c
  345.     mv y.tab.h perly.h
  346.     echo 'extern YYSTYPE yylval;' >>perly.h
  347.  
  348. perly.o: perly.c perly.h $(h)
  349.     $(CCCMD) perly.c
  350.  
  351. install: all
  352.     ./perl installperl
  353.  
  354. clean:
  355.     rm -f *.o all perl taintperl suidperl perly.c
  356.     cd x2p; $(MAKE) clean
  357.  
  358. realclean: clean
  359.     cd x2p; $(MAKE) realclean
  360.     rm -f *.orig */*.orig *~ */*~ core $(addedbyconf) h2ph h2ph.man
  361.     rm -f perly.c perly.h t/perl Makefile config.h makedepend makedir
  362.     rm -f makefile x2p/Makefile x2p/makefile cflags x2p/cflags
  363.     rm -f c2ph pstruct
  364.  
  365. # The following lint has practically everything turned on.  Unfortunately,
  366. # you have to wade through a lot of mumbo jumbo that can't be suppressed.
  367. # If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
  368. # for that spot.
  369.  
  370. lint: perly.c $(c)
  371.     lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz
  372.  
  373. depend: makedepend
  374.     - test -f perly.h || cp /dev/null perly.h
  375.     ./makedepend
  376.     - test -s perly.h || /bin/rm -f perly.h
  377.     cd x2p; $(MAKE) depend
  378.  
  379. test: perl
  380.     - cd t && chmod +x TEST */*.t
  381.     - cd t && (rm -f perl; $(SLN) ../perl perl) && ./perl TEST </dev/tty
  382.  
  383. clist:
  384.     echo $(c) | tr ' ' '\012' >.clist
  385.  
  386. hlist:
  387.     echo $(h) | tr ' ' '\012' >.hlist
  388.  
  389. shlist:
  390.     echo $(sh) | tr ' ' '\012' >.shlist
  391.  
  392. # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
  393. $(obj) hv.o:
  394.     @ echo "You haven't done a "'"make depend" yet!'; exit 1
  395. makedepend: makedepend.SH
  396.     /bin/sh $(shellflags) makedepend.SH
  397. !NO!SUBS!
  398. $eunicefix Makefile
  399. case `pwd` in
  400. *SH)
  401.     $rm -f ../Makefile
  402.     ln Makefile ../Makefile
  403.     ;;
  404. esac
  405. rm -f makefile
  406.